{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "b5d3d2fd-7a1a-415f-b1b6-4da023e9946a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "from matplotlib import gridspec\n",
    "import cartopy.crs as ccrs\n",
    "import cartopy.feature as cfeature\n",
    "import numpy as np\n",
    "import cartopy.io.shapereader as shpreader\n",
    "from netCDF4 import Dataset\n",
    "from shapely.geometry import shape\n",
    "from shapely.geometry import Polygon\n",
    "from scipy.interpolate import CubicSpline\n",
    "import math"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "644ba9ff-45cb-42a4-87b8-e06b6b8586b3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# max_lon"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "e0b4c62e-98d3-41cf-9b7a-eae08c1a5fee",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/lizhan/miniconda3/envs/py312/lib/python3.12/site-packages/IPython/core/pylabtools.py:152: UserWarning: Glyph 8722 (\\N{MINUS SIGN}) missing from current font.\n",
      "  fig.canvas.print_figure(bytes_io, **kw)\n"
     ]
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from scipy.interpolate import CubicSpline\n",
    "\n",
    "# 给定离散的数据点\n",
    "x = np.array([0, 1, 2, 3, 4])\n",
    "y = np.array([0, 1, 0, 1, 0])\n",
    "\n",
    "# 使用CubicSpline进行插值\n",
    "cs = CubicSpline(x, y, bc_type='natural')  # 'natural' 表示自然边界条件\n",
    "\n",
    "# 生成细分的x值，用于绘制插值曲线\n",
    "x_fine = np.linspace(-1, 5, 100)  # 生成包括外推范围的x值\n",
    "\n",
    "# 计算插值结果\n",
    "y_fine = cs(x_fine)  # 外推部分会使用自然边界条件进行估算\n",
    "\n",
    "# 绘制原始数据点和插值曲线\n",
    "plt.plot(x, y, 'o', label='Data points')\n",
    "plt.plot(x_fine, y_fine, '-', label='Cubic spline interpolation with extrapolation')\n",
    "plt.legend()\n",
    "plt.title('Cubic Spline Extrapolation')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "1881f91a-201d-4608-ac10-1cf826a9e086",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<scipy.interpolate._cubic.CubicSpline at 0x7f966665abc0>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "points = np.array([\n",
    "    [0, 0], \n",
    "    [1, 2], \n",
    "    [3, 3], \n",
    "    [6, 1], \n",
    "    [7, 0]\n",
    "])\n",
    "x, y = points[:, 0], points[:, 1]\n",
    "distances = np.sqrt(np.diff(x)**2 + np.diff(y)**2)\n",
    "t = np.concatenate(([0], np.cumsum(distances)))\n",
    "t /= t[-1]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "cc61eda5-3e67-4c19-8d76-4ea773286be8",
   "metadata": {},
   "outputs": [],
   "source": [
    "# reader = shpreader.Reader(shapefile_path)\n",
    "# min_lon, min_lat, max_lon, max_lat = None, None, None, None\n",
    "# geometries = [record.geometry for record in reader.records()]\n",
    "# polygon = next(reader.geometries())\n",
    "# min_lat = float('inf')\n",
    "# max_lat = float('-inf')\n",
    "# min_lon = float('inf')\n",
    "# max_lon = float('-inf')\n",
    "\n",
    "# for shape_record in reader.records():\n",
    "#     bbox = shape_record.bounds\n",
    "#     min_lon = min(min_lon, bbox[0])\n",
    "#     max_lon = max(max_lon, bbox[2])\n",
    "#     min_lat = min(min_lat, bbox[1])\n",
    "#     max_lat = max(max_lat, bbox[3])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "6070f91c-e83d-4b4d-af7c-6bf4c46d0f76",
   "metadata": {},
   "outputs": [],
   "source": [
    "# with Dataset(nc_path) as data:\n",
    "#     lon = data.variables['lon'][:]\n",
    "#     lat =  data.variables['lat'][:]\n",
    "#     data =  data.variables['T'][:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "0ea6bdee-847d-4657-a08f-b7eb0d4a640e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# mask = np.zeros(data.shape, dtype=bool)\n",
    "# for i, n in enumerate(lon):\n",
    "#     for j, t in enumerate(lat):\n",
    "#         point = shape({'type': 'Point', 'coordinates': (n, t)})\n",
    "#         mask[j, i] = polygon.contains(point)\n",
    "# clipped = np.where(mask, data, np.nan)\n",
    "# fig = plt.figure(figsize=(8,8))\n",
    "# gs = gridspec.GridSpec(nrows=1, ncols=2, width_ratios=[1, 0.05], wspace=0.0)\n",
    "# gs = gridspec.GridSpec(nrows=1, ncols=2, width_ratios=[20, 1], height_ratios=[1])\n",
    "# print(mask)\n",
    "# ax = fig.add_subplot(gs[0], projection=ccrs.PlateCarree()) \n",
    "# # ax.set_extent([min_lon, max_lon, min_lat, max_lat], crs=ccrs.PlateCarree())\n",
    "# ax.add_geometries(geometries, ccrs.PlateCarree(), edgecolor='black', facecolor='none')\n",
    "# contour = ax.contourf(lon, lat, clipped, transform=ccrs.PlateCarree())\n",
    "# cbar_ax = fig.add_subplot(gs[1])\n",
    "# cbar = fig.colorbar(contour, ax=cbar_ax, orientation='vertical',fraction=1)\n",
    "# cbar.set_label('Temperature')  # 设置色标标签\n",
    "# print(fig.dpi)\n",
    "# plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e1b1d044-31f8-4dd4-8a55-82f330c3b1b8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b7b44a3d-d15b-4ead-91ba-ed042446f93b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "42bddbc7-d74d-4aac-9cbf-c88a85afcb3d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "859490a2-1105-4e66-8aa5-d710392c9ce1",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1996b244-e663-42ac-a2c8-71ab617db729",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e0e32946-03ba-4b0a-b2a9-48a0e1629316",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
